#include "test.h"
#include "lv_font_source_han_sans_bold.h" //中文字体的头文件

// 全局变量，用于在回调函数中访问登录相关对象
static lv_obj_t * account_ta = NULL;    // 账号输入框
static lv_obj_t * password_ta = NULL;   // 密码输入框  
static lv_obj_t * login_kb  = NULL;      // 键盘对象
static lv_obj_t * login_btn = NULL;     // 登录按钮
static lv_obj_t * clear_btn = NULL;     // 清除按钮

// 文本区域事件回调函数
static void ta_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * ta = lv_event_get_target(e);
    lv_obj_t * kb = lv_event_get_user_data(e);
    
    if(code == LV_EVENT_FOCUSED) {
        // 当文本区域获得焦点时，将键盘关联到该文本区域并显示键盘
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
        
        // 调试信息
        printf("输入框获得焦点，键盘已显示\n");
    }

    if(code == LV_EVENT_DEFOCUSED) {
        // 当文本区域失去焦点时，取消关联并隐藏键盘
        lv_keyboard_set_textarea(kb, NULL);
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
        
        // 调试信息
        printf("输入框失去焦点，键盘已隐藏\n");
    }
}

// 登录按钮事件回调函数
static void login_btn_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    
    if(code == LV_EVENT_CLICKED) {
        // 获取用户输入的账号和密码
        const char * account = lv_textarea_get_text(account_ta);
        const char * password = lv_textarea_get_text(password_ta);
        
        printf("=== 登录尝试 ===\n");
        printf("账号: %s\n", account);
        printf("密码: %s\n", password);
        
        // 简单的登录验证逻辑
        if(strlen(account) == 0) {
            // 账号为空
            printf("登录失败: 账号不能为空\n");
            
            // 显示错误提示
            lv_obj_t * mbox = lv_msgbox_create(NULL, "登录失败", "账号不能为空", NULL, true);
            lv_obj_center(mbox);
            lv_obj_set_style_text_font(mbox, &lv_font_source_han_sans_bold_20, 0);
            
            // 将焦点设置到账号输入框
            lv_keyboard_set_textarea(login_kb, account_ta);
            lv_obj_clear_flag(login_kb, LV_OBJ_FLAG_HIDDEN);
            
        } else if(strlen(password) == 0) {
            // 密码为空
            printf("登录失败: 密码不能为空\n");
            
            // 显示错误提示
            lv_obj_t * mbox = lv_msgbox_create(NULL, "登录失败", "密码不能为空", NULL, true);
            lv_obj_center(mbox);
            // 在显示消息框前设置字体
            lv_obj_set_style_text_font(mbox, &lv_font_source_han_sans_bold_20, 0);

            // 将焦点设置到密码输入框
            lv_keyboard_set_textarea(login_kb, password_ta);
            lv_obj_clear_flag(login_kb, LV_OBJ_FLAG_HIDDEN);
            
        } else if(strcmp(account, "admin") == 0 && strcmp(password, "123456") == 0) 
        {
            // 登录成功（示例账号: admin, 密码: 123456）
            printf("登录成功! 欢迎管理员\n");
            
            // 登录成功跳转主界面功能界面
            timer_button_test_qiehuan();

        } else {
            // 账号密码不匹配
            printf("登录失败: 账号或密码错误\n");
            
            // 显示错误提示
            lv_obj_t * mbox = lv_msgbox_create(NULL, "登录失败", "账号或密码错误", NULL, true);
            lv_obj_center(mbox);
            lv_obj_set_style_text_font(mbox, &lv_font_source_han_sans_bold_20, 0);
            
            // 清空密码框，让用户重新输入
            lv_textarea_set_text(password_ta, "");
            
            // 将焦点设置到密码输入框
            lv_keyboard_set_textarea(login_kb, password_ta);
            lv_obj_clear_flag(login_kb, LV_OBJ_FLAG_HIDDEN);
        }
    }
}

// 清除按钮事件回调函数
static void clear_btn_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    
    if(code == LV_EVENT_CLICKED) {
        // 清空账号和密码输入框
        lv_textarea_set_text(account_ta, "");
        lv_textarea_set_text(password_ta, "");
        
        // 将焦点设置到账号输入框
        lv_keyboard_set_textarea(login_kb, account_ta);
        lv_obj_clear_flag(login_kb, LV_OBJ_FLAG_HIDDEN);
        
        printf("输入框已清空，焦点回到账号输入框\n");
    }
}

static void event_handler_bnt_11(lv_event_t * e) //按键1
{
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_PRESSED) {
        printf("切换视频界面\n");

    }
}

static void event_handler_bnt_12(lv_event_t * e)//按键2
{
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_PRESSED) {
        printf("切换音乐界面\n");
    }
}

void timer_button_test_qiehuan(void)
{   
    show_png_image("S:/IOT/bling/youhua2.png"); // 设置全屏图片 
    lv_obj_t * btn1 = lv_btn_create(lv_scr_act());
    //设置按键btn的size大小200*200
    lv_obj_set_size(btn1,100,100);
    //设置按键btn的位置(400,240)
    lv_obj_set_pos(btn1,600,100);   
    lv_obj_add_event_cb(btn1, event_handler_bnt_11, LV_EVENT_PRESSED, NULL);    
    //显示文字在按键btn上
    lv_obj_t * label1 = lv_label_create(btn1);//实例化一个标签label对象
    lv_label_set_text(label1, "视频播放");//给标签注释
    lv_obj_set_style_text_font(label1,&chinese_ziku,0);    
    lv_obj_center(label1); //将文本放在按键的中间  

    lv_obj_t * btn2 = lv_btn_create(lv_scr_act());
    //设置按键btn的size大小200*200
    lv_obj_set_size(btn2,100,100);
    //设置按键btn的位置(400,240)
    lv_obj_set_pos(btn2,600,300);   
    lv_obj_add_event_cb(btn2, event_handler_bnt_12, LV_EVENT_PRESSED, NULL);    
    //显示文字在按键btn上
    lv_obj_t * label2 = lv_label_create(btn2);//实例化一个标签label对象
    lv_label_set_text(label2, "音乐播放");//给标签注释
    lv_obj_set_style_text_font(label2,&chinese_ziku,0); 
    lv_obj_center(label2); //将文本放在按键的中间  

}

// 登录系统
void login_system(void)
{   
    show_png_image("S:/IOT/bling/youhua.png"); // 设置全屏图片 
    // /*创建登录界面背景*/
    // lv_obj_t * bg = lv_obj_create(lv_scr_act());
    // lv_obj_set_size(bg, 800, 480);  // 全屏背景
    // lv_obj_set_style_bg_color(bg, lv_color_hex(0x2C3E50), 0);  // 深蓝色背景
    // lv_obj_align(bg, LV_ALIGN_CENTER, 0, 0);
    
    /*创建登录面板*/
    lv_obj_t * login_panel = lv_obj_create(lv_scr_act());
    lv_obj_set_size(login_panel, 400, 350);  // 登录面板尺寸
    lv_obj_align(login_panel, LV_ALIGN_CENTER, 0, 0);
    lv_obj_set_style_bg_color(login_panel, lv_color_hex(0x34495E), 0);  // 稍浅的蓝色
    lv_obj_set_style_radius(login_panel, 15, 0);  // 圆角
    lv_obj_set_style_border_width(login_panel, 0, 0);  // 无边框
    
    /*创建登录标题*/
    lv_obj_t * title = lv_label_create(login_panel);
    lv_label_set_text(title, "用户登录系统");
    lv_obj_set_style_text_color(title, lv_color_white(), 0);
    lv_obj_set_style_text_font(title, &lv_font_source_han_sans_bold_20, 0);
    lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 30);
    
    /*创建账号标签*/
    lv_obj_t * account_label = lv_label_create(login_panel);
    lv_label_set_text(account_label, "账号");
    lv_obj_set_style_text_color(account_label, lv_color_white(), 0);
    lv_obj_set_style_text_font(account_label, &lv_font_source_han_sans_bold_20, 0);
    lv_obj_align(account_label, LV_ALIGN_TOP_LEFT, 50, 100);
    
    /*创建密码标签*/
    lv_obj_t * password_label = lv_label_create(login_panel);
    lv_label_set_text(password_label, "密码");
    lv_obj_set_style_text_color(password_label, lv_color_white(), 0);
    lv_obj_set_style_text_font(password_label, &lv_font_source_han_sans_bold_20, 0);
    lv_obj_align(password_label, LV_ALIGN_TOP_LEFT, 50, 170);

    /*创建虚拟键盘对象*/
    login_kb = lv_keyboard_create(lv_scr_act());
    lv_obj_set_size(login_kb, 600, 200);  // 设置键盘尺寸
    lv_obj_align(login_kb, LV_ALIGN_BOTTOM_MID, 0, 20);  // 底部居中
    
    /*创建账号输入框*/
    account_ta = lv_textarea_create(login_panel);
    lv_obj_set_size(account_ta, 200, 45);  // 输入框尺寸
    lv_obj_align(account_ta, LV_ALIGN_TOP_LEFT, 120, 90);  // 在账号标签右侧
    lv_obj_add_event_cb(account_ta, ta_event_cb, LV_EVENT_ALL, login_kb);
    lv_textarea_set_one_line(account_ta, true);  // 单行模式
    lv_obj_set_style_bg_color(account_ta, lv_color_white(), 0);  // 白色背景
    lv_obj_set_style_radius(account_ta, 8, 0);  // 圆角
    lv_obj_set_style_border_width(account_ta, 2, 0);  // 边框宽度
    lv_obj_set_style_border_color(account_ta, lv_color_hex(0x3498DB), 0);  // 蓝色边框
    
    /*创建密码输入框*/
    password_ta = lv_textarea_create(login_panel);
    lv_obj_set_size(password_ta, 200, 45);  // 输入框尺寸
    lv_obj_align(password_ta, LV_ALIGN_TOP_LEFT, 120, 160);  // 在密码标签右侧
    lv_obj_add_event_cb(password_ta, ta_event_cb, LV_EVENT_ALL, login_kb);
    lv_textarea_set_one_line(password_ta, true);  // 单行模式
    lv_textarea_set_password_mode(password_ta, true);  // 密码模式（显示为圆点）
    lv_textarea_set_password_bullet(password_ta, "•");  // 设置密码显示的字符
    lv_obj_set_style_bg_color(password_ta, lv_color_white(), 0);  // 白色背景
    lv_obj_set_style_radius(password_ta, 8, 0);  // 圆角
    lv_obj_set_style_border_width(password_ta, 2, 0);  // 边框宽度
    lv_obj_set_style_border_color(password_ta, lv_color_hex(0x3498DB), 0);  // 蓝色边框

    /*创建登录按钮*/
    login_btn = lv_btn_create(login_panel);
    lv_obj_set_size(login_btn, 100, 50);  // 按钮尺寸
    lv_obj_align(login_btn, LV_ALIGN_BOTTOM_LEFT, 70, -40);  // 左下位置
    lv_obj_set_style_bg_color(login_btn, lv_color_hex(0x27AE60), 0);  // 绿色背景
    lv_obj_set_style_radius(login_btn, 10, 0);  // 圆角
    lv_obj_add_event_cb(login_btn, login_btn_event_cb, LV_EVENT_CLICKED, NULL);
    
    lv_obj_t * login_label = lv_label_create(login_btn);
    lv_label_set_text(login_label, "登录");
    lv_obj_set_style_text_color(login_label, lv_color_white(), 0);
    lv_obj_set_style_text_font(login_label, &lv_font_source_han_sans_bold_20, 0);
    lv_obj_center(login_label);

    /*创建清除按钮*/
    clear_btn = lv_btn_create(login_panel);
    lv_obj_set_size(clear_btn, 100, 50);  // 按钮尺寸
    lv_obj_align(clear_btn, LV_ALIGN_BOTTOM_RIGHT, -70, -40);  // 右下位置
    lv_obj_set_style_bg_color(clear_btn, lv_color_hex(0xE74C3C), 0);  // 红色背景
    lv_obj_set_style_radius(clear_btn, 10, 0);  // 圆角
    lv_obj_add_event_cb(clear_btn, clear_btn_event_cb, LV_EVENT_CLICKED, NULL);
    
    lv_obj_t * clear_label = lv_label_create(clear_btn);
    lv_label_set_text(clear_label, "清除");
    lv_obj_set_style_text_color(clear_label, lv_color_white(), 0);
    lv_obj_set_style_text_font(clear_label, &lv_font_source_han_sans_bold_20, 0);
    lv_obj_center(clear_label);

    /*创建提示信息*/
    lv_obj_t * hint = lv_label_create(login_panel);
    lv_label_set_text(hint, "欢迎来到本系统");
    lv_obj_set_style_text_color(hint, lv_color_hex(0xBDC3C7), 0);
    lv_obj_set_style_text_font(hint, &lv_font_source_han_sans_bold_20, 0);
    lv_obj_align(hint, LV_ALIGN_BOTTOM_MID, 0, -10);

    /*初始时将键盘关联到账号输入框，但隐藏键盘*/
    lv_keyboard_set_textarea(login_kb, account_ta);
    lv_obj_add_flag(login_kb, LV_OBJ_FLAG_HIDDEN);  // 初始时隐藏键盘
    
    printf("=== 登录系统初始化完成 ===\n");
    printf("提示: 点击账号或密码输入框会弹出键盘\n");
    printf("测试账号: admin, 密码: 123456\n");
}

